Description
Add a custom getter to make the 'lazy' val really lazy. It should be initialized by the invocation of 'initializer()' at the moment of the first access.
You can add as many additional properties as you need.
Do not use delegated properties!
'lazy' 変数を本当にlazy(遅延)にするためのカスタムゲッターを追加してください。初回アクセス時に 'initializer()' を呼び出して初期化をする必要があります。
必要に応じて、プロパティを追加してください・
委譲プロパティは使用しないでください。
Code
class LazyProperty(val initializer: () -> Int) {
// nullableにしておく
var value: Int? = null
val lazy: Int
get() {
if (value == null) {
// 初回アクセス時の値で初期化
value = initializer()
}
//nullの場合はNullPointerExceptionをthrow
return value!!
}
}
Memo
- クラスを初期化するタイミングでは変数を初期化できない、という場合に便利
- 実際に使用する値を
val
で定義できる - 委譲プロパティ は次回